package com.base.doublepoint;

/**
 * @ClassName: CheckPerfectNumber
 * @Description: TODO(507. 完美数)
 *
 * 对于一个 正整数，如果它和除了它自身以外的所有 正因子 之和相等，我们称它为 「完美数」。
 *
 * 给定一个 整数 n， 如果是完美数，返回 true，否则返回 false
 *
 *
 *
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode-cn.com/problems/perfect-number
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 *
 * @author: li
 * @Date: 2021/12/31 12:29 上午
 */
public class CheckPerfectNumber {
    public boolean checkPerfectNumber(int num) {
        if(num==1){
            return false;
        }
        int sum = 1;
        int left = 2,right=num/left;
        while(left<right){
            if(left*right==num){
                sum+=(left+right);
            }
            left++;
            right = num/left;
        }
        if(left==right&&left*right==num){
            sum++;
        }
        return sum==num;
    }
}
